CSOL 集成工具
作者

admin

中断

多例类 Interrupt 提供了创建中断对象的功能。中断对象可以通过 Runtime:register_interrupt 方法注册到中断列表中,进而在执行器运行期间进行中断处理。

概念

执行器中存在两种中断:可屏蔽中断(maskable interrupt)不可屏蔽中断(non-maskable interrupt)Runtime 中允许开发者开、关中断。关中断后,将不会触发可屏蔽中断,但不可屏蔽中断不受中断开关的影响。除了重要程度很高的中断事件,一般中断应设置为可屏蔽中断。

执行器的手动接管功能就采用不可屏蔽中断实现。

字段

name

说明:中断名称,类型为 string

注解:构造时可缺省,缺省值为 "ANONYMOUS"

handler

说明:中断处理函数,类型为 function

注解:构造时可缺省,缺省时提供默认的空处理函数。

parameters

说明:中断处理函数接收的参数列表,类型为 any[]

注解:构造时可缺省,缺省时提供空参数列表。

maskable

说明:中断对象可屏蔽性,类型为 boolean

注解:构造时可缺省,缺省值为 true,即默认为可屏蔽中断。将不可屏蔽中断对象注册到 Runtime 的中断列表后,即使处于关中断状态,不可屏蔽中断对象依旧触发中断。

alive

说明:中断对象是否有效,类型为 boolean

注解:构造时可缺省,缺省值为 true,即默认有效。

result

说明:最近一次执行 handler 的返回值。

注解:若 handler 无返回值,则此字段为 nil

方法

new

说明:构造中断对象。

原型:Interrupt:new(init)

  • init:初始化列表,或中断处理函数,类型为 table | function。当 inittable 时,表中可包含本文所述的 namehandlerparametersmaskablealive 字段(其余字段丢弃);当 initfunction 时,handler 被设置为 init ,其余字段保持缺省值。

返回:中断对象,类型为 Interrupt

注解:

is_alive

说明:判断中断对象是否有效(alive 字段)。

原型:Interrupt:is_alive

返回:若有效,返回 true;否则,返回 false

is_maskable

说明:判断中断对象是否可屏蔽(maskable 字段)。

原型:Interrupt:is_maskable()

返回:若该中断可屏蔽,则返回 true;否则,返回 false

kill

说明:“杀死”中断对象。

注解:调用后,相应中断的 alive 被置为 false

handle

说明:调用构造时提供的中断处理函数 handler

原型:Interrupt:handle()

返回:与 handler 保持一致。

注解:result 中也会保存 handler 的返回值。若 handler 存在多个返回值,result 则将其封装为列表。

get_result

说明:获取最近一次中断处理结果(即 result)。

原型:Interrupt:get_result()

返回:中断处理结果。对于单个返回值,类型与 handler 返回值类型相同;对于多个返回值,result 则将其封装为列表。